#include <iostream>
#include "shm.hpp"
#include "namepipe.hpp"
int main()
{
    //创建共享内存类
    shm mem(shmspace::gPathname, shmspace::gProjid, shmspace::gShmSize, shmspace::gUser);
    
    //创建命名管道，用于共享内存之间的同步，当写端不进行写入时，读端会一直阻塞等待，
    //这样可以避免共享内存由于没有同步机制而导致的数据不一致问题
    namepipe fifo(pipespace::gpathname, pipespace::gUser);

    fifo.OpenPipeWrite(); //管道打开写端

    char ch = 'A';
    char *add = (char *)mem.GetShmAddr(); //获取共享内存空间的地址
    while (ch < 'G')
    {
        add[ch - 'A'] = ch;

        //往共享内存内写入数据
        std::cout << "client deliver :" << add << std::endl;

        //在共享内存写入完毕后往管道内写入数据，读端收到管道的信息后就可以读取共享内存中的数据，实现同步
        fifo.DeliverMassage("I'm ok");
        ch++;

        sleep(1);
    }

    return 0;
}